FREESLOT
MT_MUSMROM
MT_MUSHROM
MT_ORDTREE
MT_BLUEBELL
MT_REDSPIKEFW
MT_WHITEFLOWER
MT_SPINE
MT_GHZMC
MT_GHZFLR
MT_GHZBUSH
MT_BIGFLRR
MT_GHZFLOWER_BASE
MT_GHZFLOWER_TRUNK
MT_GHZFLOWER_GROUND
MT_REDROCKT
MT_FLAMEROCKT
MT_BROWNROCKT
MT_BLACKROCKT
MT_NULLMONITOR
MT_NULLMONITOR_GOLD
MT_NULLMONITOR_ICON
MT_GLASSBUMPER
S_MUSHRM1
S_MUSMRM1
S_SPINE
S_ORDTREE
S_BLUEBEL1
S_REDSPIKEFW
S_WHITEFLOWER
S_BIGFLRR
S_GHZMC1
S_GHZMC2
S_GHZBUSH
S_GHZFLR1
S_GHZFLR2
S_GHZFLOWER_BASE1
S_GHZFLOWER_BASE2
S_GHZFLOWER_TRUNK
S_GHZFLOWER_GROUND
S_FANG_TARGET
S_FANG_TARGET_ACTIVATE
S_FANG_LINEEXEC
S_FLAMEROCKT_ROLL
S_REDROCKT_ROLL
S_BROWNROCKT_ROLL
S_BLACKROCKT_ROLL
S_NULLMONITOR1
S_NULLMONITOR2
S_NULLMONITOR3
S_NULLMONITOR4
S_NULLMONITOR5
S_NULLMONITOR6
S_NULLMONITOR_GOLD
S_GLASSBUMPER_IDLE
S_GLASSBUMPER_ACTIVE
S_GLASSBUMPER_DEAD1
S_GLASSBUMPER_DEAD2
S_GLASSBUMPER_P_IDLE
S_GLASSBUMPER_P_ACTIVE
S_GLASSBUMPER_P_DEAD1
S_GLASSBUMPER_P_DEAD2
S_GLASSBUMPER_G_IDLE
S_GLASSBUMPER_G_ACTIVE
S_GLASSBUMPER_G_DEAD1
S_GLASSBUMPER_G_DEAD2
S_GLASSBUMPER_B_IDLE
S_GLASSBUMPER_B_ACTIVE
S_GLASSBUMPER_B_DEAD1
S_GLASSBUMPER_B_DEAD2
S_SWITCH_BASE
S_SWITCH_OFF
S_SWITCH_ON
S_BALLSTAR
S_CRABBUMPER_WALK1
S_CRABBUMPER_WALK2
S_CRABBUMPER_WALK3
S_CRABBUMPER_WALK4
S_CRABBUMPER_PAUSE
S_CRABBUMPER_WALK1_GLASS
S_CRABBUMPER_WALK2_GLASS
S_CRABBUMPER_WALK3_GLASS
S_CRABBUMPER_WALK4_GLASS
S_CRABBUMPER_PAUSE_GLASS
S_CRABBUMPER_WALK1_EGGBUMP
S_CRABBUMPER_WALK2_EGGBUMP
S_CRABBUMPER_WALK3_EGGBUMP
S_CRABBUMPER_WALK4_EGGBUMP
S_CRABBUMPER_PAUSE_EGGBUMP
S_PURPLEGRAPE_DECOR
S_PURPLEGRAPE_EXPLODE
S_PURPLEGRAPE_SPLISH
S_PURPLEGRAPE_GRASS
S_PURPLEGRAPE_QUIET
S_PURPLEGRAPE_FOUND
S_PURPLEGRAPE_APEAR
S_PURPLEGRAPE_READYFALL
S_PURPLEGRAPE_FALLING
S_PURPLEGRAPE_MISSILE1
S_PURPLEGRAPE_MISSILE2
S_PURPLEGRAPE_MISSILE3
S_PURPLEGRAPE_MISSILE4
S_PURPLEGRAPE_PARTICLE
S_PURPLEGRAPE_PARTDEAD
SPR_MUSH
SPR_MUSM
SPR_STRE
SPR_GHBLA0
SPR_GHBLB0
SPR_GHZBA0
SPR_GHZFA0
SPR_GHZFB0
SPR_GHFHB0
SPR_GHFHA0
SPR_GHZD
SPR_ORTR
SPR_BLBL
SPR_BFLR
SPR_RSFW
SPR_WHFW
SPR_TVNL
SPR_POPR
SPR_POPP
SPR_POPG
SPR_POPB
SPR_SWIT
SPR_F_LE
SPR_CRB3
SPR_CRB4
SPR_CRB5
SPR_GRAP
SPR_GRPE
SPR_GRPS
SFX_FTARG
SFX_GLASSP

##### Objects #####

### Mikhael Blur things ###

##GHZ Mace Object

Object MT_GHZMC
#$Name GHZ Mace
#$Category Green Hill
#$Sprite GHBLA0
MapThingNum = 4000
SpawnState = S_GHZMC1
SpawnHealth = 1000
Radius = 34*FRACUNIT
Height = 68*FRACUNIT
Mass = 100
Flags = MF_PAIN|MF_NOGRAVITY

##GHZ Mace States

State S_GHZMC1
SpriteName = GHBL
SpriteFrame = A
Duration = 3
Action = None
Next = S_GHZMC2

State S_GHZMC2
SpriteName = GHBL
SpriteFrame = B
Duration = 1
Action = None
Next = S_GHZMC1

##GHZ Bush

Object MT_GHZBUSH
MapThingNum = 4001
#$Name Bush
#$Category Green Hill
#$Sprite GHZBA0
SpawnState = S_GHZBUSH
SeeState = S_GHZBUSH
SpawnHealth = 1000
Radius = 32*FRACUNIT
Height = 32*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_GHZBUSH
SpriteName = GHZB
SpriteFrame = FF_PAPERSPRITE|A
Duration = -1
Action = None
Next = S_NULL

##GHZ Sunflower

Object MT_GHZFLR
MapThingNum = 4002
#$Name Sunflower (Alt)
#$Category Green Hill
#$Sprite GHZFA0
SpawnState = S_GHZFLR1
SeeState = S_GHZFLR1
SpawnHealth = 1000
Radius = 16*FRACUNIT
Height = 112*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_GHZFLR1
SpriteName = GHZF
SpriteFrame = A
Duration = 11
Action = None
Next = S_GHZFLR2

State S_GHZFLR2
SpriteName = GHZF
SpriteFrame = B
Duration = 11
Action = None
Next = S_GHZFLR1

##Blue Bells

Object MT_BLUEBELL
MapThingNum = 4012
#$Name Blue Bells
#$Category Scenery
#$Sprite BLBLA0
SpawnState = S_BLUEBEL1
SeeState = S_BLUEBEL1
SpawnHealth = 1000
Radius = 32*FRACUNIT
Height = 112*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_BLUEBEL1
SpriteName = BLBL
SpriteFrame = A|FF_ANIMATE
Duration = -1
Var1 = 7
Var2 = 4
Next = S_BLUEBEL1

##Red Spiky Flower

Object MT_REDSPIKEFW
MapThingNum = 4013
#$Name Red Spiky Flower
#$Category Scenery
#$Sprite RSFWA0
SpawnState = S_REDSPIKEFW
SeeState = S_REDSPIKEFW
SpawnHealth = 1000
Radius = 32*FRACUNIT
Height = 112*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_REDSPIKEFW
SpriteName = RSFW
SpriteFrame = A
Duration = -1
Next = S_REDSPIKEFW

##White Flower

Object MT_WHITEFLOWER
MapThingNum = 4014
#$Name White Flower
#$Category Scenery
#$Sprite WHFWA0
SpawnState = S_WHITEFLOWER
SeeState = S_WHITEFLOWER
SpawnHealth = 1000
Radius = 32*FRACUNIT
Height = 112*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_WHITEFLOWER
SpriteName = WHFW
SpriteFrame = A
Duration = -1
Next = S_WHITEFLOWER


##GHZ Sunflower (Dynamic)

Object MT_GHZFLOWER_BASE
#$Name Sunflower (Dynamic)
#$Category Green Hill
#$Sprite GHZDA0
MapThingNum = 4003
SpawnState = S_GHZFLOWER_BASE1
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_XPLD1
DeathSound = sfx_pop
Speed = 3
Radius = 16*FRACUNIT
Height = 16*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SCENERY|MF_NOGRAVITY|MF_RUNSPAWNFUNC|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING

State S_GHZFLOWER_BASE1
SpriteName = GHZD
SpriteFrame = A
Duration = 1
Action = A_ConnectToGround
Var1 = MT_GHZFLOWER_TRUNK
Var2 = MT_GHZFLOWER_GROUND
Next = S_GHZFLOWER_BASE2

State S_GHZFLOWER_BASE2
SpriteName = GHZD
SpriteFrame = A|FF_ANIMATE
Duration = -1
Var1 = 1
Var2 = 11
Next = S_GHZFLOWER_BASE2

Object MT_GHZFLOWER_TRUNK
MapThingNum = -1
SpawnState = S_GHZFLOWER_TRUNK
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_XPLD1
DeathSound = sfx_pop
Speed = 3
Radius = 16*FRACUNIT
Height = 32*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SCENERY|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING

State S_GHZFLOWER_TRUNK
SpriteName = GHZD
SpriteFrame = C
Duration = -1
Next = S_GHZFLOWER_TRUNK

Object MT_GHZFLOWER_GROUND
MapThingNum = -1
SpawnState = S_GHZFLOWER_GROUND
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_XPLD1
DeathSound = sfx_pop
Speed = 3
Radius = 16*FRACUNIT
Height = 32*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SCENERY|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING

State S_GHZFLOWER_GROUND
SpriteName = GHZD
SpriteFrame = D
Duration = -1
Next = S_GHZFLOWER_GROUND

Object MT_ORDTREE
MapThingNum = 4010
#$Name An ordinary tree
#$Category Bricked Busted
#$Sprite ORTRA0
SpawnState = S_ORDTREE
SeeState = S_ORDTREE
SpawnHealth = 1000
Radius = 30*FRACUNIT
Height = 152*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_SOLID|MF_NOGRAVITY|MF_SCENERY

State S_ORDTREE
SpriteName = ORTR
SpriteFrame = A
Duration = -1
Action = None
Next = S_ORDTREE

Object MT_BIGFLRR
MapThingNum = 4011
#$Name Red Big Flower
#$Category Bricked Busted
#$Sprite BFLRA0
SpawnState = S_BIGFLRR
SeeState = S_BIGFLRR
SpawnHealth = 1000
Radius = 12*FRACUNIT
Height = 64*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_BIGFLRR
SpriteName = BFLR
SpriteFrame = A
Duration = 3
Action = None
Next = S_BIGFLRR
Var1 = 0
Var2 = 0

### romineblox0 things ###

##GWZ Snowy Pine

Object MT_SPINE
MapThingNum = 4008
#$Name Snowy Pine
#$Category Glacial Winter
#$Sprite STREA0
SpawnState = S_SPINE
SeeState = S_SPINE
SpawnHealth = 1000
Radius = 20*FRACUNIT
Height = 628*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_SOLID|MF_NOGRAVITY|MF_SCENERY

State S_SPINE
SpriteName = STRE
SpriteFrame = A
Duration = -1
Action = None
Next = S_SPINE

##RFZ Small Mushroom

Object MT_MUSHROM
MapThingNum = 4007
#$Name Small Mushroom
#$Category Rain Forest
#$Sprite MUSHA0
SpawnState = S_MUSHRM1
SeeState = S_MUSHRM1
SpawnHealth = 1000
Radius = 10*FRACUNIT
Height = 16*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY

State S_MUSHRM1
SpriteName = MUSH
SpriteFrame = A
Duration = 3
Action = None
Next = S_MUSHRM1
Var1 = 0
Var2 = 0

##RFZ Medium Mushroom

Object MT_MUSMROM
MapThingNum = 4009
#$Name Medium Mushroom
#$Category Rain Forest
#$Sprite MUSMA0
SpawnState = S_MUSMRM1
SeeState = S_MUSMRM1
SpawnHealth = 1000
Radius = 24*FRACUNIT
Height = 53*FRACUNIT
Mass = 50*FRACUNIT
Damage = 0
Flags = MF_NOGRAVITY|MF_SCENERY

State S_MUSMRM1
SpriteName = MUSM
SpriteFrame = A
Duration = 3
Action = None
Next = S_MUSMRM1
Var1 = 0
Var2 = 0

### ketchupik things ###

#Mini RVZ Balls objects

Object MT_REDROCKT
#$Name Red Rock
#$Sprite ROIFA0
#$Category Volcanno Valley
MAPTHINGNUM = 2502
SPAWNSTATE = S_REDROCKT_ROLL
SPAWNHEALTH = 1000
SEESTATE = S_REDROCKT_ROLL
REACTIONTIME = 8
PAINCHANCE = 65536*TICRATE
DeathState = S_REDROCKT_ROLL
SPEED = 10*FRACUNIT
RADIUS = 12*FRACUNIT
HEIGHT = 24*FRACUNIT
MASS = 1
DAMAGE = 1
ACTIVESOUND = sfx_rocks1
FLAGS = MF_PUSHABLE|MF_SOLID|MF_SLIDEME

Object MT_FLAMEROCKT
#$Name Flame Rock
#$Sprite ROIEA0
#$Category Volcanno Valley
MAPTHINGNUM = 2503
SPAWNSTATE = S_FLAMEROCKT_ROLL
SPAWNHEALTH = 1000
SEESTATE = S_FLAMEROCKT_ROLL
REACTIONTIME = 8
PAINCHANCE = 65536*TICRATE
DeathState = S_FLAMEROCKT_ROLL
SPEED = 10*FRACUNIT
RADIUS = 12*FRACUNIT
HEIGHT = 24*FRACUNIT
MASS = 1
DAMAGE = 1
ACTIVESOUND = sfx_rocks1
FLAGS = MF_PUSHABLE|MF_SOLID|MF_SLIDEME

Object MT_BROWNROCKT
#$Name Brown Rock
#$Sprite ROIBA0
#$Category Volcanno Valley
MAPTHINGNUM = 2504
SPAWNSTATE = S_BROWNROCKT_ROLL
SPAWNHEALTH = 1000
SEESTATE = S_BROWNROCKT_ROLL
REACTIONTIME = 8
PAINCHANCE = 65536*TICRATE
DeathState = S_BROWNROCKT_ROLL
SPEED = 10*FRACUNIT
RADIUS = 12*FRACUNIT
HEIGHT = 24*FRACUNIT
MASS = 1
DAMAGE = 1
ACTIVESOUND = sfx_rocks1
FLAGS = MF_PUSHABLE|MF_SOLID|MF_SLIDEME

Object MT_BLACKROCKT
#$Name Black Rock
#$Sprite ROILA0
#$Category Volcanno Valley
MAPTHINGNUM = 2506
SPAWNSTATE = S_BLACKROCKT_ROLL
SPAWNHEALTH = 1000
SEESTATE = S_BLACKROCKT_ROLL
REACTIONTIME = 8
PAINCHANCE = 65536*TICRATE
DeathState = S_BLACKROCKT_ROLL
SPEED = 10*FRACUNIT
RADIUS = 12*FRACUNIT
HEIGHT = 24*FRACUNIT
MASS = 1
DAMAGE = 1
ACTIVESOUND = sfx_rocks1
FLAGS = MF_PUSHABLE|MF_SOLID|MF_SLIDEME

#Mini RVZ Balls states

State S_REDROCKT_ROLL
SpriteName = ROIF
SpriteFrame = FF_ANIMATE|A
Duration = 1
Next = S_REDROCKT_ROLL
Action A_RolloutRock
VAR1 = 63*FRACUNIT/64
VAR2 = 7*FRACUNIT/10

State S_FLAMEROCKT_ROLL
SpriteName = ROIE
SpriteFrame = FF_ANIMATE|A
Duration = 1
Next = S_FLAMEROCKT_ROLL
Action A_RolloutRock
VAR1 = 63*FRACUNIT/64
VAR2 = 7*FRACUNIT/10

State S_BROWNROCKT_ROLL
SpriteName = ROIB
SpriteFrame = FF_ANIMATE|A
Duration = 1
Next = S_BROWNROCKT_ROLL
Action A_RolloutRock
VAR1 = 63*FRACUNIT/64
VAR2 = 7*FRACUNIT/10

State S_BLACKROCKT_ROLL
SpriteName = ROIL
SpriteFrame = FF_ANIMATE|A
Duration = 1
Next = S_BLACKROCKT_ROLL
Action A_RolloutRock

##### Gimmicks #####

### Null Monitor ###

Object MT_NULLMONITOR
#$Name Null
#$Category Monitors
#$Sprite TVNLA0
MapThingNum = 423
SpawnState = S_NULLMONITOR1
SpawnHealth = 1
ReactionTime = 8
PainState = S_NULLMONITOR1
DeathState = S_BOX_POP1
XDeathState = S_NULL
DeathSound = sfx_pop
Speed = 1
Radius = 18*FRACUNIT
Height = 40*FRACUNIT
DispOffset = 0
Mass = 100
Damage = MT_NULLMONITOR_ICON
ActiveSound = sfx_None
Flags = MF_SOLID|MF_SHOOTABLE|MF_MONITOR

Object MT_NULLMONITOR_ICON
MapThingNum = -1
SpawnState = S_NULLMONITOR2
SpawnHealth = 1
DeathSound = sfx_None
ReactionTime = 10
Speed = 2*FRACUNIT
Radius = 8*FRACUNIT
Height = 14*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 62*FRACUNIT
Flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON

Object MT_NULLMONITOR_GOLD
#$Name Null (Respawn)
#$Category Monitors (Respawning)
#$Sprite TVNLB0
MapThingNum = 453
SpawnState = S_NULLMONITOR_GOLD
SpawnHealth = 1
ReactionTime = 8
AttackSound = sfx_monton
PainState = S_NULLMONITOR_GOLD
DeathState = S_GOLDBOX_OFF1
XDeathState = S_NULL
DeathSound = sfx_pop
Speed = 0
Radius = 20*FRACUNIT
Height = 44*FRACUNIT
DispOffset = 0
Mass = 100
Damage = MT_NULLMONITOR_ICON
ActiveSound = sfx_None
Flags = MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE

State S_NULLMONITOR1
SpriteName = TVNL
SpriteFrame = A
Duration = 2
Next = S_BOX_FLICKER

State S_NULLMONITOR_GOLD
SpriteName = TVNL
SpriteFrame = B
Duration = 2
Action = A_GoldMonitorSparkle
Next = S_GOLDBOX_FLICKER

State S_NULLMONITOR2
SpriteName = TVNL
SpriteFrame = C
Duration = 4
Next = S_NULLMONITOR3

State S_NULLMONITOR3
SpriteName = TVNL
SpriteFrame = D
Duration = 4
Next = S_NULLMONITOR4

State S_NULLMONITOR4
SpriteName = TVNL
SpriteFrame = E
Duration = 4
Next = S_NULLMONITOR5

State S_NULLMONITOR5
SpriteName = TVNL
SpriteFrame = F
Duration = 4
Next = S_NULLMONITOR6

State S_NULLMONITOR6
SpriteName = TVNL
SpriteFrame = C
Duration = 18
Next = S_NULL

### Spin Speed ###

Object MT_SPAWNSPINSPEED
#$Name Spin Speed
#$Sprite BMCHC0
#$Category Bricked Busted
MapThingNum = 140
SpawnState = S_BIGMACECHAIN
SpawnHealth = 9999
ReactionTime = 32
Speed = 0
Radius = 16*FRACUNIT
Height = 32*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY

Object MT_SPINSPEED
MapThingNum = -1
SpawnState = S_BIGGRABCHAIN
SpawnHealth = 9999
ReactionTime = 32
Speed = 0
Radius = 16*FRACUNIT
Height = 32*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SCENERY|MF_NOGRAVITY|MF_SPECIAL

##Fang Target object (inspired by Sonic Classic 2)

Object MT_FANG_LINEEXEC
#$Name Fang Target
#$Sprite F_LED0
#$AngleText Tag
#$Category Switches
MapThingNum = 141
SpawnState = S_FANG_LINEEXEC
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_FANG_LINEEXEC
DeathSound = sfx_none
Speed = 3
Radius = 16*FRACUNIT
Height = 16*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
ActiveSound = sfx_None
Flags = MF_SCENERY|MF_NOCLIP|MF_NOBLOCKMAP

Object MT_FANG_TARGET
MapThingNum = -1
SpawnState = S_FANG_TARGET
SpawnHealth = 1
ReactionTime = 32
PainState = S_FANG_TARGET_ACTIVATE
PainSound = sfx_ftarg
DeathState = S_FANG_TARGET_ACTIVATE
DeathSound = sfx_none
Speed = 3
Radius = 24*FRACUNIT
Height = 16*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SHOOTABLE|MF_NOGRAVITY

##Fang Target states

State S_FANG_LINEEXEC
SpriteName = F_LE
SpriteFrame = A
Duration = -1
Next = S_FANG_LINEEXEC

State S_FANG_TARGET
SpriteName = F_LE
SpriteFrame = B|FF_PAPERSPRITE
Duration = -1
Next = S_FANG_TARGET

State S_FANG_TARGET_ACTIVATE
SpriteName = F_LE
SpriteFrame = C|FF_PAPERSPRITE
Duration = -1
Next = S_FANG_TARGET_ACTIVATE

##Fang Target sound

Sound sfx_ftarg
Singular = 0
Priority = 64
Flags = SF_X2AWAYSOUND|SF_X4AWAYSOUND

### Flame Thrower ###

Object MT_FLAMETHROWER
#$Name Flame Thrower
#$Sprite FIRSS2S8
#$ParameterText Shoot Delay
MapThingNum = 3825
SpawnState = S_INVISIBLE
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_XPLD1
DeathSound = sfx_pop
Speed = 0
Radius = 16*FRACUNIT
Height = 32*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP

State S_FLAMETHROWER
SpriteName = TROW
SpriteFrame = A|FF_PAPERSPRITE
Duration = -1
Next = S_FLAMETHROWER

Object MT_LB_BULLET
MapThingNum = -1
SpawnState = S_LB_BULLET
SpawnHealth = 1
SeeSound = sfx_s1ae
ReactionTime = 32
Speed = 16*FRACUNIT
Radius = 24*FRACUNIT
Height = 24*FRACUNIT
DispOffset = 0
Mass = DMG_FIRE
Damage = 0
Flags = MF_MISSILE|MF_NOGRAVITY

State S_LB_BULLET
SpriteName = FIRS
SpriteFrame = S|FF_FULLBRIGHT
Duration = -1
Next = S_LB_BULLET

### Glass Bumper ###

Object MT_GLASSBUMPER
#$Name Glass Bumper
#$Sprite POPRA0
#$AngleText Strength
#$Category Springs and Fans
MapThingNum = 546
SpawnState = S_GLASSBUMPER_IDLE
SpawnHealth = 1
ReactionTime = 1
PainChance = -1
PainSound = sfx_glassp
DeathState = S_GLASSBUMPER_DEAD1
Radius = 32*FRACUNIT
Height = 64*FRACUNIT
Mass = 16*FRACUNIT
Flags = MF_SPRING|MF_NOGRAVITY|MF_SHOOTABLE
RaiseState = S_GLASSBUMPER_ACTIVE

Object MT_GLASSBUMPER_PAST
#$Name Glass Bumper (Past)
#$Sprite POPPA0
#$AngleText Strength
#$Category Springs and Fans
MapThingNum = 547
SpawnState = S_GLASSBUMPER_P_IDLE
SpawnHealth = 1
ReactionTime = 1
PainChance = -1
PainSound = sfx_glassp
DeathState = S_GLASSBUMPER_P_DEAD1
Radius = 32*FRACUNIT
Height = 64*FRACUNIT
Mass = 16*FRACUNIT
Flags = MF_SPRING|MF_NOGRAVITY|MF_SHOOTABLE
RaiseState = S_GLASSBUMPER_P_ACTIVE

Object MT_GLASSBUMPER_GOODFUTURE
#$Name Glass Bumper (Good Future)
#$Sprite POPGA0
#$AngleText Strength
#$Category Springs and Fans
MapThingNum = 548
SpawnState = S_GLASSBUMPER_G_IDLE
SpawnHealth = 1
ReactionTime = 1
PainChance = -1
PainSound = sfx_glassp
DeathState = S_GLASSBUMPER_G_DEAD1
Radius = 32*FRACUNIT
Height = 64*FRACUNIT
Mass = 16*FRACUNIT
Flags = MF_SPRING|MF_NOGRAVITY|MF_SHOOTABLE
RaiseState = S_GLASSBUMPER_G_ACTIVE

Object MT_GLASSBUMPER_BADFUTURE
#$Name Glass Bumper (Bad Future)
#$Sprite POPBA0
#$AngleText Strength
#$Category Springs and Fans
MapThingNum = 549
SpawnState = S_GLASSBUMPER_B_IDLE
SpawnHealth = 1
ReactionTime = 1
PainChance = -1
PainSound = sfx_glassp
DeathState = S_GLASSBUMPER_B_DEAD1
Radius = 32*FRACUNIT
Height = 64*FRACUNIT
Mass = 16*FRACUNIT
Flags = MF_SPRING|MF_NOGRAVITY|MF_SHOOTABLE
RaiseState = S_GLASSBUMPER_B_ACTIVE

##Glass Bumper states

State S_GLASSBUMPER_IDLE
SpriteName = POPR
SpriteFrame = A
Duration = -1
Next = S_GLASSBUMPER_IDLE

State S_GLASSBUMPER_ACTIVE
SpriteName = POPR
SpriteFrame = A
Duration = 2
Action = A_RemoteDamage
Var1 = 0
Var2 = 1
Next = S_GLASSBUMPER_ACTIVE

State S_GLASSBUMPER_DEAD1
SpriteName = POPR
SpriteFrame = B
Duration = 5
Action = A_Pain
Next = S_GLASSBUMPER_DEAD2

State S_GLASSBUMPER_DEAD2
SpriteName = POPR
SpriteFrame = C
Duration = 5
Next = S_NULL

### Past Version ###

State S_GLASSBUMPER_P_IDLE
SpriteName = POPP
SpriteFrame = A
Duration = -1
Next = S_GLASSBUMPER_P_IDLE

State S_GLASSBUMPER_P_ACTIVE
SpriteName = POPP
SpriteFrame = A
Duration = 2
Action = A_RemoteDamage
Var1 = 0
Var2 = 1
Next = S_GLASSBUMPER_P_ACTIVE

State S_GLASSBUMPER_P_DEAD1
SpriteName = POPP
SpriteFrame = B
Duration = 5
Action = A_Pain
Next = S_GLASSBUMPER_P_DEAD2

State S_GLASSBUMPER_P_DEAD2
SpriteName = POPP
SpriteFrame = C
Duration = 5
Next = S_NULL

### Good Future Version ###

State S_GLASSBUMPER_G_IDLE
SpriteName = POPG
SpriteFrame = A|FF_ANIMATE
Duration = -1
Var1 = 1
Var2 = 4
Next = S_GLASSBUMPER_G_IDLE

State S_GLASSBUMPER_G_ACTIVE
SpriteName = POPG
SpriteFrame = A
Duration = 2
Action = A_RemoteDamage
Var1 = 0
Var2 = 1
Next = S_GLASSBUMPER_G_ACTIVE

State S_GLASSBUMPER_G_DEAD1
SpriteName = POPG
SpriteFrame = C
Duration = 5
Action = A_Pain
Next = S_GLASSBUMPER_G_DEAD2

State S_GLASSBUMPER_G_DEAD2
SpriteName = POPG
SpriteFrame = D
Duration = 5
Next = S_NULL

### Bad Future Version ###

State S_GLASSBUMPER_B_IDLE
SpriteName = POPB
SpriteFrame = A
Duration = -1
Next = S_GLASSBUMPER_B_IDLE

State S_GLASSBUMPER_B_ACTIVE
SpriteName = POPB
SpriteFrame = A
Duration = 2
Action = A_RemoteDamage
Var1 = 0
Var2 = 1
Next = S_GLASSBUMPER_B_ACTIVE

State S_GLASSBUMPER_B_DEAD1
SpriteName = POPB
SpriteFrame = B
Duration = 5
Action = A_Pain
Next = S_GLASSBUMPER_B_DEAD2

State S_GLASSBUMPER_B_DEAD2
SpriteName = POPB
SpriteFrame = C
Duration = 5
Next = S_NULL

### Ball Switch ###

Object MT_SWITCH_BASE
#$Name Ball Switch
#$Sprite SWITD0
#$AngleText Tag
#$Category Switches
MapThingNum = 1715
SpawnState = S_SWITCH_BASE
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_XPLD1
DeathSound = sfx_pop
Speed = 0
Radius = 16*FRACUNIT
Height = 8*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_NOCLIPTHING|MF_STICKY

State S_SWITCH_BASE
SpriteName = SWIT
SpriteFrame = A
Duration = -1
Next = S_SWITCH_BASE

Object MT_SWITCH_BALL
MapThingNum = -1
SpawnState = S_SWITCH_OFF
SpawnHealth = 1000
ReactionTime = 32
DeathState = S_XPLD1
DeathSound = sfx_pop
Speed = 0
Radius = 16*FRACUNIT
Height = 16*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SPECIAL|MF_SCENERY|MF_NOGRAVITY

State S_SWITCH_OFF
SpriteName = SWIT
SpriteFrame = C
Duration = -1
Next = S_SWITCH_OFF

State S_SWITCH_ON
SpriteName = SWIT
SpriteFrame = B
Duration = -1
Next = S_SWITCH_ON

State S_BALLSTAR
SpriteName = SWIT
SpriteFrame = D|FF_PAPERSPRITE
Duration = -1
Next = S_BALLSTAR

##### Enemies #####

### Crab Bumper ###

Object MT_CRABBUMPER
#$Name Crab Bumper
#$Sprite CRB3A0
#$Category Enemies
#$Flags4Text 2 Bumpers
MapThingNum = 150
SpawnState = S_CRABBUMPER_WALK1
SpawnHealth = 1
ReactionTime = 32
DeathState = S_XPLD_FLICKY
DeathSound = sfx_pop
Speed = 8
Radius = 28*FRACUNIT
Height = 64*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE

State S_CRABBUMPER_WALK1
SpriteName = CRB3
SpriteFrame = A
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE
Next = S_CRABBUMPER_WALK2

State S_CRABBUMPER_WALK2
SpriteName = CRB3
SpriteFrame = B
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE
Next = S_CRABBUMPER_WALK3

State S_CRABBUMPER_WALK3
SpriteName = CRB3
SpriteFrame = A
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE
Next = S_CRABBUMPER_WALK4

State S_CRABBUMPER_WALK4
SpriteName = CRB3
SpriteFrame = C
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE
Next = S_CRABBUMPER_WALK1

State S_CRABBUMPER_PAUSE
SpriteName = CRB3
SpriteFrame = A
Duration = 40
Next = S_CRABBUMPER_WALK1

Object MT_CRABBUMPER_AIM
#$Name Crab Bumper (Homing)
#$Sprite CRB3A0
#$Category Enemies
MapThingNum = 151
SpawnState = S_CRABBUMPER_WALK1
SpawnHealth = 1
ReactionTime = 32
DeathState = S_XPLD_FLICKY
DeathSound = sfx_pop
Speed = 8
Radius = 28*FRACUNIT
Height = 64*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE

### Crab Bumper (Glass Bumper) ###

Object MT_CRABBUMPER_GLASS
#$Name Crab Bumper (Glass Bumper)
#$Sprite CRB4A0
#$Category Enemies
#$Flags4Text 2 Bumpers
#$ParameterText Ver. (1-3)
MapThingNum = 152
SpawnState = S_CRABBUMPER_WALK1_GLASS
SpawnHealth = 1
ReactionTime = 32
DeathState = S_XPLD_FLICKY
DeathSound = sfx_pop
Speed = 8
Radius = 28*FRACUNIT
Height = 64*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE

State S_CRABBUMPER_WALK1_GLASS
SpriteName = CRB4
SpriteFrame = A
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_GLASS
Next = S_CRABBUMPER_WALK2_GLASS

State S_CRABBUMPER_WALK2_GLASS
SpriteName = CRB4
SpriteFrame = B
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_GLASS
Next = S_CRABBUMPER_WALK3_GLASS

State S_CRABBUMPER_WALK3_GLASS
SpriteName = CRB4
SpriteFrame = A
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_GLASS
Next = S_CRABBUMPER_WALK4_GLASS

State S_CRABBUMPER_WALK4_GLASS
SpriteName = CRB4
SpriteFrame = C
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_GLASS
Next = S_CRABBUMPER_WALK1_GLASS

State S_CRABBUMPER_PAUSE_GLASS
SpriteName = CRB4
SpriteFrame = A
Duration = 40
Next = S_CRABBUMPER_WALK1_GLASS

Object MT_CRABBUMPER_GLASS_AIM
#$Name Crab Bumper (Glass Bumper - Homing)
#$Sprite CRB4A0
#$Category Enemies
#$ParameterText Ver. (1-3)
MapThingNum = 153
SpawnState = S_CRABBUMPER_WALK1_GLASS
SpawnHealth = 1
ReactionTime = 32
DeathState = S_XPLD_FLICKY
DeathSound = sfx_pop
Speed = 8
Radius = 28*FRACUNIT
Height = 64*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE

### Crab Bumper (Eggman Bumper) ###

Object MT_CRABBUMPER_EGGBUMP
#$Name Crab Bumper (Eggman Bumper)
#$Sprite CRB5A0
#$Category Enemies
#$Flags4Text 2 Bumpers
MapThingNum = 154
SpawnState = S_CRABBUMPER_WALK1_EGGBUMP
SpawnHealth = 1
ReactionTime = 32
DeathState = S_XPLD_FLICKY
DeathSound = sfx_pop
Speed = 8
Radius = 28*FRACUNIT
Height = 64*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE

State S_CRABBUMPER_WALK1_EGGBUMP
SpriteName = CRB5
SpriteFrame = A
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_EGGBUMP
Next = S_CRABBUMPER_WALK2_EGGBUMP

State S_CRABBUMPER_WALK2_EGGBUMP
SpriteName = CRB5
SpriteFrame = B
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_EGGBUMP
Next = S_CRABBUMPER_WALK3_EGGBUMP

State S_CRABBUMPER_WALK3_EGGBUMP
SpriteName = CRB5
SpriteFrame = A
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_EGGBUMP
Next = S_CRABBUMPER_WALK4_EGGBUMP

State S_CRABBUMPER_WALK4_EGGBUMP
SpriteName = CRB5
SpriteFrame = C
Duration = 3
Action = A_CrushstaceanWalk
Var1 = 0
Var2 = S_CRABBUMPER_PAUSE_EGGBUMP
Next = S_CRABBUMPER_WALK1_EGGBUMP

State S_CRABBUMPER_PAUSE_EGGBUMP
SpriteName = CRB5
SpriteFrame = A
Duration = 40
Next = S_CRABBUMPER_WALK1_EGGBUMP

Object MT_CRABBUMPER_EGGBUMP_AIM
#$Name Crab Bumper (Eggman Bumper - Homing)
#$Sprite CRB5A0
#$Category Enemies
MapThingNum = 155
SpawnState = S_CRABBUMPER_WALK1_EGGBUMP
SpawnHealth = 1
ReactionTime = 32
DeathState = S_XPLD_FLICKY
DeathSound = sfx_pop
Speed = 8
Radius = 28*FRACUNIT
Height = 64*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE

### Grape ###

Object MT_PURPLEGRAPE_DECOR
#$Name Grape
#$Sprite GRAPA0
#$Category Scenery
MapThingNum = 4004
SpawnState = S_PURPLEGRAPE_DECOR
SpawnHealth = 1
ReactionTime = 32
DeathState = S_PURPLEGRAPE_EXPLODE
DeathSound = sfx_ghit
Speed = 0
Radius = 64*FRACUNIT
Height = 128*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SPECIAL|MF_NOGRAVITY

State S_PURPLEGRAPE_DECOR
SpriteName = GRAP
SpriteFrame = A
Duration = -1
Next = S_PURPLEGRAPE_DECOR

State S_PURPLEGRAPE_EXPLODE
SpriteName = GRPE
SpriteFrame = A|FF_ANIMATE
Duration = 12
Var1 = 5
Var2 = 2
Next = S_NULL

State S_PURPLEGRAPE_SPLISH
SpriteName = GRPS
SpriteFrame = A|FF_ANIMATE|FF_TRANS50
Duration = 18
Var1 = 8
Var2 = 2
Next = S_NULL

State S_PURPLEGRAPE_GRASS
SpriteName = GRAP
SpriteFrame = C
Duration = -1
Next = S_PURPLEGRAPE_GRASS

### Sussy Grape ###

Object MT_PURPLEGRAPE
#$Name Sussy Grape
#$Sprite GRAPB0
#$Category Enemies
MapThingNum = 4005
SpawnState = S_PURPLEGRAPE_QUIET
SpawnHealth = 1
SeeState = S_PURPLEGRAPE_FOUND
SeeSound = sfx_None
ReactionTime = 32
DeathState = S_PURPLEGRAPE_EXPLODE
DeathSound = sfx_ghit
Speed = 0
Radius = 64*FRACUNIT
Height = 128*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY

State S_PURPLEGRAPE_QUIET
SpriteName = GRAP
SpriteFrame = A
Duration = 2
Next = S_PURPLEGRAPE_QUIET

State S_PURPLEGRAPE_FOUND
SpriteName = GRAP
SpriteFrame = A
Duration = 35
Next = S_PURPLEGRAPE_APEAR

State S_PURPLEGRAPE_APEAR
SpriteName = GRAP
SpriteFrame = B
Duration = -1
Action = A_HoodFire
Var1 = MT_PURPLEGRAPE_MISSILE
Next = S_PURPLEGRAPE_APEAR

State S_PURPLEGRAPE_READYFALL
SpriteName = GRAP
SpriteFrame = B
Duration = 35
Next = S_PURPLEGRAPE_FALLING

State S_PURPLEGRAPE_FALLING
SpriteName = GRAP
SpriteFrame = D
Duration = -1
Action = A_PlaySound
Var1 = sfx_s3k51
Var2 = 1
Next = S_PURPLEGRAPE_FALLING

Object MT_PURPLEGRAPE_PARTICLE
MapThingNum = -1
SpawnState = S_PURPLEGRAPE_PARTICLE
SpawnHealth = 1
ReactionTime = 32
DeathState = S_PURPLEGRAPE_SPLISH
DeathSound = sfx_None
Speed = 0
Radius = 16*FRACUNIT
Height = 24*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_SPECIAL

State S_PURPLEGRAPE_PARTICLE
SpriteName = GRAP
SpriteFrame = E
Duration = 2
Action = A_Boss5CheckOnGround
Var1 = S_PURPLEGRAPE_PARTDEAD
Var2 = S_PURPLEGRAPE_PARTDEAD
Next = S_PURPLEGRAPE_PARTICLE

State S_PURPLEGRAPE_PARTDEAD
SpriteName = GRAP
SpriteFrame = E
Duration = 2
Action = A_RemoteDamage
Var1 = 0
Var2 = 1
Next = S_PURPLEGRAPE_PARTDEAD

Object MT_PURPLEGRAPE_MISSILE
MapThingNum = -1
SpawnState = S_PURPLEGRAPE_MISSILE1
SpawnHealth = 1
ReactionTime = 32
DeathState = S_SONIC3KBOSSEXPLOSION1
DeathSound = sfx_cybdth
Speed = 8*FRACUNIT
Radius = 16*FRACUNIT
Height = 24*FRACUNIT
DispOffset = 0
Mass = 100
Damage = 0
Flags = MF_MISSILE|MF_GRENADEBOUNCE

State S_PURPLEGRAPE_MISSILE1
SpriteName = NULL
SpriteFrame = A
Duration = 2
Next = S_PURPLEGRAPE_MISSILE2

#Hack For Triple Shot
State S_PURPLEGRAPE_MISSILE2
SpriteName = NULL
SpriteFrame = A
Duration = 1
Action = A_GrapeTripleShot
Next = S_PURPLEGRAPE_MISSILE3

State S_PURPLEGRAPE_MISSILE3
SpriteName = GRAP
SpriteFrame = E
Duration = 2
Action = A_GrapeCeilBounce
Next = S_PURPLEGRAPE_MISSILE4

State S_PURPLEGRAPE_MISSILE4
SpriteName = GRAP
SpriteFrame = F
Duration = 2
Action = A_GrapeCeilBounce
Next = S_PURPLEGRAPE_MISSILE3